package com.yesallchina.tencent.wx.webapp.spi;

import com.yesallchina.wxapp.officialaccount.api.MessageApi;
import com.yesallchina.wxapp.officialaccount.api.beans.Message;
import com.yesallchina.wxapp.officialaccount.api.beans.TextMessage;
import com.yesallchina.wxapp.officialaccount.ext.BusinessMessageHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Arrays;
import java.util.List;

/**
 * 消息服务处理器
 *
 * 当接收到用户发送过来的信息，而业务端需要根据用户发送的信息进行处理时
 *
 * 通过实现{@link com.yesallchina.wxapp.officialaccount.ext.BusinessMessageHandler}可以进行自定义消息处理
 *
 * 实现handle方法，返回一条或者多条{@link com.yesallchina.wxapp.officialaccount.api.beans.Message}
 *
 *  最后在配置文件中配置wxapp.officialaccount.spi.messageHandlerName = 自定义的实现类路径
 */
@Component
public class MessageHandler implements BusinessMessageHandler {
    @Autowired
    MessageApi messageApi;

    @Override
    public List<Message> handle(Message message) {
        // 处理message之后，及时回复一条消息
        TextMessage myMsg = new TextMessage();
        myMsg.setToUserName(message.getFromUserName());
        myMsg.setFromUserName(message.getToUserName());
        myMsg.setCreateTime(String.valueOf(System.currentTimeMillis()));
        myMsg.setContent("您的消息已收到，这是一条客服消息");
        // 发送一条客服消息
        messageApi.sendCustomeMessage(myMsg);
        myMsg.setContent("您的消息已收到，这是一条回复消息");
        // 及时回复一条消息
        return Arrays.asList(new Message[]{myMsg});
    }
}
